home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-04 / pxewin.zip / PXREC.CPP < prev    next >
Text File  |  1992-02-06  |  7KB  |  259 lines

  1. // PXEWIN - (C) Copyright 1992 by Beam Engineering, INC.
  2.  
  3. // PXREC_CPP //
  4.  
  5. // Contents ----------------------------------------------------------------
  6. //
  7. //    This module contains members of the PXRec class for interfacing
  8. //    with records in a Paradox table.
  9. //
  10. // End ---------------------------------------------------------------------
  11.  
  12. // External Reference Name for this Header ---------------------------------
  13.  
  14. #ifndef PXREC_CPP
  15.     #define PXREC_CPP
  16.  
  17. // End ---------------------------------------------------------------------
  18.  
  19. // Interface Dependencies --------------------------------------------------
  20.  
  21. #ifndef PXREC_HPP
  22.     #include "pxrec.hpp"
  23. #endif // PXREC_HPP //
  24.  
  25. // End ---------------------------------------------------------------------
  26.  
  27. // constructor PXRec //
  28.  
  29. inline PXRec::PXRec(PPXEngObject my_engobj)
  30. {
  31.     EngDataPtr = my_engobj->EngDataPtr;
  32.  
  33.     // Create a record handle
  34.  
  35.     recHandle = new RECORDHANDLE;
  36.  
  37.     // Open the record buffer
  38.  
  39.     if((EngDataPtr->Errors.pxerr = PXRecBufOpen(EngDataPtr->tblHandle,
  40.         recHandle)) != PXSUCCESS)
  41.         PXError(ENG_ERROR);
  42.     else
  43.         close_status = OPENED;
  44. }
  45.  
  46. // Summary -----------------------------------------------------------------
  47. //
  48. //    Open record transfer buffer.
  49. //
  50. // Parameters
  51. //
  52. //    my_engobj.  This is the parent engine object pointer for referencing
  53. //    back to the parent object.
  54. //
  55. // Description
  56. //
  57. //      1.  Copy the Engine Data Pointer.
  58. //
  59. //    2.  Make a new record handle.
  60. //    3.  Open a record transfer buffer and the closed_status to OPENED if
  61. //    there are no errors.
  62. //
  63. // End ---------------------------------------------------------------------
  64.  
  65. // destructor PXRec //
  66.  
  67. inline PXRec::~PXRec()
  68. {
  69.     if(close_status == OPENED)
  70.     {
  71.         if((EngDataPtr->Errors.pxerr = PXRecBufClose(*recHandle))
  72.             != PXSUCCESS)
  73.             PXError(ENG_ERROR);
  74.     }
  75.     delete recHandle;
  76.     recHandle = NULL;
  77. }
  78.  
  79. // Summary -----------------------------------------------------------------
  80. //
  81. //    If the record transfer buffer is opened, close it. Delete the record
  82. //    handle and set it's pointer to NULL so that if the destructor is
  83. //    called again, it won't delete the same pointer again.
  84. //
  85. // End ---------------------------------------------------------------------
  86.  
  87. // member build of PXRec //
  88.  
  89. PTStreamable PXRec::build()
  90. {
  91.     return new PXRec(streamableInit);
  92. }
  93.  
  94. TStreamableClass RegPXRec("PXRec",PXRec::build,
  95.     __DELTA(PXRec));
  96.  
  97. // Description -------------------------------------------------------------
  98. //
  99. //    When the streamable constructor is called, TStreamable dispatches
  100. //    the build member to construct the object.  To do this, it must
  101. //    know where to find this member functions for the specific class.
  102. //    This is the reason for the stream registration.
  103. //
  104. // End ---------------------------------------------------------------------
  105.  
  106. // member read of PXRec //
  107.  
  108. inline Pvoid PXRec::read(Ripstream)
  109. {
  110.     return this;
  111. }
  112.  
  113. // Description -------------------------------------------------------------
  114. //
  115. //    Nothing is taken from the stream.
  116. //
  117. // End ---------------------------------------------------------------------
  118.  
  119. // member write of PXRec //
  120.  
  121. inline void PXRec::write(Ropstream)
  122. {
  123.  
  124. }
  125.  
  126. // Description -------------------------------------------------------------
  127. //
  128. //    Nothing is put on the stream.
  129. //
  130. // End ---------------------------------------------------------------------
  131.  
  132. // member Get of PXRec //
  133.  
  134. inline int PXRec::Get()
  135. {
  136.     if((EngDataPtr->Errors.pxerr = PXRecGet(EngDataPtr->tblHandle,
  137.         *recHandle)) != PXSUCCESS)
  138.         PXError(ENG_ERROR);
  139.     return EngDataPtr->Errors.pxerr;
  140. }
  141.  
  142. // Summary -----------------------------------------------------------------
  143. //
  144. //    Gets a record into the record transfer buffer.
  145. //
  146. // Return Value
  147. //
  148. //    pxerr.  Returns PDOX error status.
  149. //
  150. // End ---------------------------------------------------------------------
  151.  
  152. // member Update of PXRec //
  153.  
  154. inline int PXRec::Update()
  155. {
  156.     if((EngDataPtr->Errors.pxerr = PXRecUpdate(EngDataPtr->tblHandle,
  157.         *recHandle)) != PXSUCCESS)
  158.         PXError(ENG_ERROR);
  159.     return EngDataPtr->Errors.pxerr;
  160. }
  161.  
  162. // Summary -----------------------------------------------------------------
  163. //
  164. //     Updates the current record in the table from the record transfer
  165. //    buffer.
  166. //
  167. // Return Value
  168. //
  169. //    pxerr.  Returns PDOX error status.
  170. //
  171. // End ---------------------------------------------------------------------
  172.  
  173. // member RecPrev of PXRec //
  174.  
  175. inline int PXRec::RecPrev()
  176. {
  177.     if((EngDataPtr->Errors.pxerr = PXRecPrev(EngDataPtr->tblHandle))
  178.         != PXSUCCESS)
  179.         PXError(ENG_ERROR);
  180.     return EngDataPtr->Errors.pxerr;
  181. }
  182.  
  183. // Summary -----------------------------------------------------------------
  184. //
  185. //    Goes to the previous record in the database.
  186. //
  187. // Return Value
  188. //
  189. //    pxerr.  Returns PDOX error status.
  190. //
  191. // End ---------------------------------------------------------------------
  192.  
  193. // member RecNext of PXRec //
  194.  
  195. inline int PXRec::RecNext()
  196. {
  197.     if((EngDataPtr->Errors.pxerr = PXRecNext(EngDataPtr->tblHandle))
  198.         != PXSUCCESS)
  199.         PXError(ENG_ERROR);
  200.     return EngDataPtr->Errors.pxerr;
  201. }
  202.  
  203. // Summary -----------------------------------------------------------------
  204. //
  205. //    Goes to the next record in the database.
  206. //
  207. // Return Value
  208. //
  209. //    pxerr.  Returns PDOX error status.
  210. //
  211. // End ---------------------------------------------------------------------
  212.  
  213. // member GoTo of PXRec //
  214.  
  215. inline int PXRec::GoTo(RECORDNUMBER recNum)
  216. {
  217.     if((EngDataPtr->Errors.pxerr = PXRecGoto(EngDataPtr->tblHandle,
  218.         recNum)) != PXSUCCESS)
  219.         PXError(ENG_ERROR);
  220.     return EngDataPtr->Errors.pxerr;
  221. }
  222.  
  223. // Summary -----------------------------------------------------------------
  224. //
  225. //    Goes to a given record number in the database.
  226. //
  227. // Parameters
  228. //
  229. //    recNum.  Is the record number of the record you wish to go to.
  230. //
  231. // Return Value
  232. //
  233. //    pxerr.  Returns PDOX error code.
  234. //
  235. // End ---------------------------------------------------------------------
  236.  
  237. // member PXError of PXRec //
  238.  
  239. inline void PXRec::PXError(int org)
  240. {
  241.     // Call base class error handler
  242.  
  243.     PXEngObject::PXError(org);
  244.  
  245.     // Call the parent handler
  246.  
  247.     EngDataPtr->PXEObjPtr->EngDataPtr->Errors.pxerr =
  248.         EngDataPtr->Errors.pxerr;
  249.     EngDataPtr->PXEObjPtr->PXError(EngDataPtr->Errors.Origin);
  250. }
  251.  
  252. // Description -------------------------------------------------------------
  253. //
  254. //    Calls the parent error handler if you have an error.  This provides
  255. //    a centralized error handler for all classes derived from PXEngObject.
  256. //
  257. // End ---------------------------------------------------------------------
  258.  
  259. #endif // PXREC_CPP //